home *** CD-ROM | disk | FTP | other *** search
- /*
- ** CTLMOD.H -- control module header file
- **
- ** This header file defines all the internal data structures
- ** used by the control module.
- **
- ** If something other than the control module or the initializer
- ** has to include this, something is wrong!
- **
- ** Compilation Flags:
- ** xCM_DEBUG -- if set, certain code is compiled in that
- ** does consistancy checks on the data structures
- ** at opportune times.
- ** xMONITOR -- if set, turns on performance evaluation
- ** code.
- ** xCTR1, xCTR2, xCTR3 -- if set, turns on various levels
- ** of trace information. These must be properly
- ** nested; if xCTR2 is set, xCTR1 *MUST* be set.
- **
- ** Version:
- ** @(#)ctlmod.h 8.1 12/31/84
- */
-
-
-
-
-
-
- /* include some other files */
- # include "state.h"
- # include "proc.h"
- # include <pv.h>
- # include "pipes.h"
- # include <func.h>
- # include <pmon.h>
- # include <setjmp.h>
-
- /* basic constants */
- # include <useful.h>
-
-
- /*
- ** Trace Flag settings.
- */
-
- # include <trace.h>
- # define xCTR1 1
- # define xCTR2 1
- # define xCTR3 1
- # define xCM_DEBUG 1
- # define xMONITOR 1
-
- /*
- ** STRUCT CM -- the configuration structure.
- */
-
- struct _cm_t
- {
- char cm_myname[12]; /* my process name */
- state_t cm_state[CM_MAXST]; /* the state descriptions */
- proc_t cm_proc[CM_MAXPROC]; /* the process descriptions */
- int cm_myproc; /* my process id */
- char cm_input; /* the current input file */
- char cm_rinput; /* the reset input file */
- };
-
- /*
- ** STRUCT CTX -- the context structure.
- **
- ** There is one of these around for every currently known
- ** context. There is a pipe block associated with the
- ** context, defined in call() or main(); only a pointer
- ** is kept here so that the pipe block can be more efficiently
- ** allocated off the stack.
- **
- ** Some of the fields describe the NEXT block in the sequence.
- ** These are: ctx_size, ctx_link.
- **
- ** Ctx_cmark is useful ONLY when this block is not currently
- ** active.
- **
- ** Ctx_qt should be of type 'struct qthdr *'; it is 'char *' to
- ** avoid including qtree.h. It points to the saved query
- ** tree header after the first qt is read in.
- **
- ** Ctx_pv MUST be last.
- */
-
- typedef struct _ctx_t
- {
- char *ctx_name; /* the printname of this proc */
- pb_t *ctx_ppb; /* the pb associated w/ this ctx */
- short *ctx_tvect; /* the trace vect for this ctx */
- int (*ctx_errfn)(); /* the error handling function */
- char *ctx_qt; /* pointer to saved Qt struct */
- struct fn_def *ctx_fn; /* pointer to fn descriptor */
- char *ctx_glob; /* ptr to saved global area */
- struct _ctx_t *ctx_link; /* a link to the next ctx */
- struct monitor *ctx_mon; /* ptr to monitor struct */
- short ctx_size; /* the size of the next ctx */
- bool ctx_init; /* set if between initp & call */
- bool ctx_new; /* set if this is a new context */
- char ctx_resp; /* process to respond to */
- int ctx_cmark; /* the Qbuf context mark */
- int ctx_pmark; /* the Qbuf parameter mark */
- jmp_buf ctx_jbuf; /* longjmp point on fatal error */
- long ctx_ofiles; /* files that should be kept open */
- int ctx_pc; /* the parm count */
- PARM ctx_pv[PV_MAXPC+1]; /* the parm vector */
- } ctx_t;
-
- extern ctx_t Ctx; /* the current context */
- extern char Qbuf[]; /* the free space buffer */
- extern int QbufSize; /* the size of Qbuf */
- extern struct _cm_t Cm; /* the system configuration */
- extern int Syncs[CM_MAXPROC]; /* the number of SYNCs expected */
-
-
- /*
- ** ERROR NUMBERS
- */
-
- # define ERR_QBUF 100 /* Qbuf overflow */
-